package com.ziytek.web.citizen.mapper;

import com.ziytek.web.citizen.model.bean.CapacityKeyStats;
import com.ziytek.web.citizen.pojo.LocalCapacityTable;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * @author fenghx
 * @version 1.0
 * @className LocalCapacityMapper
 * Description:
 * @date 2024/3/25 16:08
 */
@Mapper
public interface LocalCapacityMapper extends EasyBaseMapper<LocalCapacityTable> {

    /**
     * Description: 表是否存在
     *
     * @param tableName 表名
     * @return Integer 1存在 0不存在
     */
    Integer existTable(String tableName);

    /**
     * Description: 创建表
     */
    void createTable();

    /**
     * Description: 创建表索引
     */
    void createTableIndex();

    /**
     * Description: 创建表索引
     */
    void createTableIndexOne();

    /**
     * Description: 创建表索引
     */
    void createTableIndexTwo();

    /**
     * Description: 创建表索引
     */
    void createTableIndexThree();

    /**
     * Description: 创建表索引
     */
    void createTableIndexFour();

    /**
     * Description: 电池分容结束数据
     *
     * @param cabinetNo     机柜编号
     * @param capacityStart capacityStart
     * @param capacityEnd   capacityEnd
     * @return List<StageIssuedTable>
     */
    List<LocalCapacityTable> findByCabinetNoAndCapacityBetweenOrderByCreatedTime(String cabinetNo, Float capacityStart, Float capacityEnd);

    /**
     * Description: 电池分容统计数据
     *
     * @param cabinetNo     机柜编号
     * @param capacityStart capacityStart
     * @param capacityEnd   capacityEnd
     * @return List<CapacityStats>
     */
    List<CapacityKeyStats> findStatsByCabinetNo(String cabinetNo, Float capacityStart, Float capacityEnd);


    /**
     * Description: 电池分容统计数据
     *
     * @param cabinetNo 机柜编号
     * @param key key
     * @return StageIssuedTable
     */
    LocalCapacityTable findByCabinetNoAndKey(String cabinetNo,String key);

    /**
     * Description: 电池分容统计总数
     *
     * @param cabinetNo     机柜编号
     * @param capacityStart capacityStart
     * @param capacityEnd   capacityEnd
     * @return List<CapacityStats>
     */
    long findStatsByCabinetNoCount(String cabinetNo, Float capacityStart, Float capacityEnd);

    /**
     * Description: 删除电池分容数据
     *
     * @param cabinetNo 机柜编号
     */
    void deleteByCabinetNo(String cabinetNo);
}
